import wx from 'weixin-js-sdk'


class YfWx {

    constructor(){

    }

    static  isShowProgressTips = 0


    
    // static getWxConfig(url) {
    //     let params = {
    //         url: url
    //     }
    //     return request.post('/api/sdk/config', qss(params));
    // }

    static wxConfig  = (config,isDebug) => {
        // if (store.state.url)  {//ios首次进入记录地址
        //     url = store.state.url.split('#')[0]
        // }
        return new Promise((resolve,reject) => {
            let debug = isDebug?true:false
            wx.config({
                debug: debug, // 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过log打出，仅在pc端时才会打印。
                appId: config.appId, // 必填，公众号的唯一标识
                timestamp:config.timestamp , // 必填，生成签名的时间戳
                nonceStr: config.nonceStr, // 必填，生成签名的随机串
                signature: config.signature,// 必填，签名
                jsApiList: ['chooseImage','previewImage','uploadImage','startRecord','stopRecord','onVoiceRecordEnd','playVoice','pauseVoice','stopVoice','onVoicePlayEnd','uploadVoice','downloadVoice','downloadImage','getLocalImgData','onMenuShareAppMessage','onMenuShareTimeline','chooseWXPay'] // 必填，需要使用的JS接口列表
            });
            wx.ready(function(){
                resolve('ready')
                console.log('ready')
                // config信息验证后会执行ready方法，所有接口调用都必须在config接口获得结果之后，config是一个客户端的异步操作，所以如果需要在页面加载时就调用相关接口，则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口，则可以直接调用，不需要放在ready函数中。

            });
            wx.error(function(res){
                console.log('微信配置失败!'+res)
                reject('微信配置失败!'+res)
            });
        })

    }
    //图片选择数量
    static  chooseImage = (count) => {
        if(!count){
            count = 1
        }
        return new Promise(resolve => {
            wx.chooseImage({
                count: count, // 默认9
                sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图，默认二者都有
                sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机，默认二者都有
                success: function (res) {
                    resolve(res.localIds)
                    // let localIds = res.localIds; // 返回选定照片的本地ID列表，localId可以作为img标签的src属性显示图片
                }
            });
        })

    }
   static previewImage= (current,urls) => {
        wx.previewImage({
            current: current, // 当前显示图片的http链接
            urls: urls // 需要预览的图片http链接列表
        });
    }
    static uploadImage= (localId) => { //上传图片到微信
        return new Promise(resolve => {
            wx.uploadImage({
                localId: localId, // 需要上传的图片的本地ID，由chooseImage接口获得
                isShowProgressTips: YfWx.isShowProgressTips, // 默认为1，显示进度提示
                success:  (res) => {
                    resolve(res.serverId)
                    // let serverId = res.serverId; // 返回图片的服务器端ID
                }
            });
        })

    }
    static downloadImage= (serverId) => {  //下载图片到本地
        return new Promise((resolve,reject) => {
                console.log('下载中')
                wx.downloadImage({
                    serverId: serverId, // 需要下载的图片的服务器端ID，由uploadImage接口获得
                    isShowProgressTips: YfWx.isShowProgressTips, // 默认为1，显示进度提示
                    success: function (res) {
                        console.log('成功了')
                        let  localId = res.localId
                        resolve(localId)
                    },
                    fail:function (error) {
                        console.log('downloadImage error:'+error)
                        resolve('image error')
                    }
                });
        })
    }

    //ios 根据localId下载base64图片资源
    static getLocalImgData = (localId) => {
        return new Promise((resolve,reject) => {
            wx.getLocalImgData({
                localId:localId, // 图片的localID
                success: function (res) {
                    console.log(res)
                    resolve(res.localData)
                    // successCallback(res.localData)
                },
                fail:function (error) {
                    console.log(error)
                    resolve('ios image error')
                }
            });
        })

    }
    // getLocalImgData: function(localId) {
    //     wx.getLocalImgData({
    //         localId: localId, // 图片的localID
    //         success: function (res) {
    //             alert(localId + '1212121212')
    //             return res
    //         }
    //     });
    // },

    //开始录音，记录录音时间
   static  startRecord=() => {
        wx.startRecord();
    }


    //停止录音 就会触发
   static stopRecord=()=>{
        return new Promise(resolve => {
            wx.stopRecord({
                success: function (res) {
                    resolve(res.localId)
                    // let localId = res.localId;
                    // successCallBack(res)
                }
            });
        })

    }
    //播放声音
   static playVoice=(localId)=>{
        wx.playVoice({
            localId: localId // 需要播放的音频的本地ID，由stopRecord接口获得
        });
    }
    //暂停播放
   static pauseVoice=(localId)=>{
        wx.pauseVoice({
            localId: localId // 需要暂停的音频的本地ID，由stopRecord接口获得
        });
    }
    static stopVoice=(localId)=>{
        wx.stopVoice({
            localId: localId // 需要停止的音频的本地ID，由stopRecord接口获得
        });
    }
    //播放完毕 监听接口
   static onVoicePlayEnd = () => {
        console.log('注册了')
        return new Promise(resolve => {
            wx.onVoicePlayEnd({
                success: function (res) {
                    resolve(res.localId)
                    // let localId = res.localId; // 返回音频的本地ID
                    // successCallback(res)
                }
            });
        })

    }
   static uploadVoice = (localId) => {
        return new Promise(resolve => {
            wx.uploadVoice({
                localId: localId, // 需要上传的音频的本地ID，由stopRecord接口获得
                isShowProgressTips: YfWx.isShowProgressTips, // 默认为1，显示进度提示
                success: function (res) {
                    // let serverId = res.serverId; // 返回音频的服务器端ID
                    // successCallback(res)
                    resolve(res.serverId)
                }
            })
        })

    }

   static downloadVoice =  (serverId) => {
        return new Promise((resolve,reject) => {
            wx.downloadVoice({
                serverId: serverId, // 需要下载的音频的服务器端ID，由uploadVoice接口获得
                isShowProgressTips: YfWx.isShowProgressTips, // 默认为1，显示进度提示
                success: function (res) {
                    console.log('语音下载完了')
                    resolve(res.localId)
                    // let localId = res.localId; // 返回音频的本地ID
                    // successCallback(res)
                },
                fail:function (error) {
                    console.log(error)
                    reject(error)
                }
            });
        })

    }
    //语音翻译
   static translateVoice =  (localId) => {
        return new Promise(resolve => {
            wx.translateVoice({
                localId: localId, // 需要识别的音频的本地Id，由录音相关接口获得
                isShowProgressTips: YfWx.isShowProgressTips, // 默认为1，显示进度提示
                success: function (res) {
                    // alert(res.translateResult); // 语音识别的结果
                    // successCallback(res)
                    resolve(res.translateResult)
                }
            });
        })

    }

    static share = (title,desc, link, imageUrl) => {
        //需在用户可能点击分享按钮前就先调用
            wx.onMenuShareTimeline({
                title: title, // 分享标题
                link: link, // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
                imgUrl: imageUrl, // 分享图标
            }, function(res) {
                alert('分享成功')
//这里是回调函数
            });

        wx.onMenuShareAppMessage({
            title: title, // 分享标题
            desc: desc, // 分享描述
            link: link, // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
            imgUrl:imageUrl, // 分享图标
            type: 'link', // 分享类型,music、video或link，不填默认为link
            dataUrl: '', // 如果type是music或video，则要提供数据链接，默认为空
            success: function () {
// 用户点击了分享后执行的回调函数
            }
        });
    }

    static initVoice = () =>{
        //每次进入尝试录音一下 防止没有授权
        wx.startRecord();
        //一秒后结束
        setTimeout(function () {
            wx.stopRecord()
        }, 1000)
    }

    /**
     * 微信支付
     */
    static pay = (param) => {
        return new Promise(resolve => {
            wx.chooseWXPay({
                timestamp: param.timeStamp, // 支付签名时间戳，注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
                nonceStr: param.nonceStr, // 支付签名随机串，不长于 32 位
                package: param.package, // 统一支付接口返回的prepay_id参数值，提交格式如：prepay_id=\*\*\*）
                signType: param.signType, // 签名方式，默认为'SHA1'，使用新版支付需传入'MD5'
                paySign: param.paySign, // 支付签名
                success: function (res) {
                    resolve(res)
                },
                fail:function (res) {
                    console.log(JSON.stringify(res)+'--------fail')
                }
            });
        })
    }
}

export default YfWx



/**
 *  微信所有接口列表 https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115
onMenuShareTimeline

onMenuShareAppMessage

onMenuShareQQ

onMenuShareWeibo

onMenuShareQZone

startRecord

stopRecord

onVoiceRecordEnd

playVoice

pauseVoice

stopVoice

onVoicePlayEnd

uploadVoice

downloadVoice

chooseImage

previewImage

uploadImage

downloadImage

translateVoice

getNetworkType

openLocation

getLocation

hideOptionMenu

showOptionMenu

hideMenuItems

showMenuItems

hideAllNonBaseMenuItem

showAllNonBaseMenuItem

closeWindow

scanQRCode

chooseWXPay

openProductSpecificView

addCard

chooseCard

openCard

 */

